1 REM SAVE"0:COPYALL 64 GLINK",8 2 REM ** JIM BUTTERFIELD'S C64 COPY-ALL 3 REM ** MODIFIED FOR USE WITH THE GLINK IEEE-488 INTERFACE 4 REM ** RICHARD EVERS 07-06-1987 5 : 6 REM ** ALLOWS CONCURRENT COPYING OF DATA 7 REM ** SERIAL TO IEEE-488, IEEE-488 TO SERIAL 8 REM ** SERIAL TO SERIAL OR IEEE-488 TO IEEE-488 9 REM ** VIA TRANSACTOR'S GLINK IEEE-488 INTERFACE 10 : 11 REM ** TRANSACTOR PUBLISHING INC. 12 REM ** 85 WEST WILMOT ST., #10 13 REM ** RICHMOND HILL,ONTARIO, CANADA 14 REM ** L4B-1K7 (416) 764-5273 15 : 16 PRINT "[147] DISK COPY-ALL JIM BUTTERFIELD" 17 PRINT "** GLINK IEEE-488 INTERFACE VERSION **" 18 PRINT " COPIES BETWEEN SERIAL AND IEEE DRIVES" 19 A$="!JIM BUTTERFIELD!": A$=A$+A$+A$: A$=A$+A$+A$+A$+A$ 20 P$="" 21 DIM L2(232),L1%(232),N$(232),T%(232),T$(4) 22 DATA XXX,SEQ,PRG,USR,REL 23 FOR J=0 TO 4: READ T$(J): NEXTJ 24 : 25 REM WHEN SIZE=3956 THEN CODE BEGINS AT 6005 26 Z1=6027: REM ENTRY POINT #1 27 Z2=Z1+3: REM ENTRY POINT #2 28 Z3=Z2+3: REM ENTRY POINT #3 29 Z4=Z3+3: REM ENTRY POINT #4 30 INIT=Z4+3: REM MOVE ROM TO RAM, ETC. 31 SWAP=INIT+3: REM SWAP ROM TO RAM OR VICE-VERSA 32 FR=251: TU=252: TP=253: REM FROM, TO AND TEMP STORAGE OF DRIVE TYPE 33 : 34 INPUT"FROM UNIT 8[157][157][157]";F 35 GOSUB123: REM GET DRVNUM 36 F$=D$ 37 INPUT "1) SERIAL OR 2) IEEE 2[157][157][157]";TF 38 IF TF<1 OR TF>2 THEN 37 39 : 40 INPUT"TO UNIT 8[157][157][157]";T 41 GOSUB123: REM GET DRVNUM 42 T$=D$ 43 INPUT "1) SERIAL OR 2) IEEE 1[157][157][157]";TT 44 IF TT<1 OR TT>2 THEN 43 45 : 46 IF F=T AND F$=T$ AND TT=TF THEN RUN 47 : 48 POKE FR,TF-1: POKE TU,TT-1: REM DRIVE TYPE SOURCE AND DESTINATION 49 SYS(INIT): REM MOVE ROM TO RAM, ETC. 50 XX=FR: GOSUB 136: N=0: CLOSE1: CLOSE15: OPEN 15,F,15: PRINT#15,"I"+F$ 51 GOSUB127: IF E THEN STOP: GOTO 50 52 Z=90: PRINT: INPUT"PATTERN *[157][157][157]";P$ 53 P$="XXX"+LEFT$(P$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16) 54 PRINT "HOLD DOWN 'Y' OR 'N' KEY TO SELECT" 55 PRINT "PROGRAMS TO BE COPIED..." 56 OPEN 1,F,3,"$"+F$: REM OK 57 GOSUB127: IF E THEN STOP: GOTO50 58 SYS(Z1) 59 R=255: GOTO 61 60 SYS(Z2) 61 FOR J=16TO2STEP-1: IF ASC(MID$(A$,J+3))=160 THEN NEXTJ 62 N$=MID$(A$,4,J) 63 T9=ASC(A$)-128: IF T9<1 OR T9>4 GOTO75 64 L1%=ASC(MID$(A$,22)) 65 L2=ASC(MID$(A$,29))+ASC(MID$(A$,30))*256 66 PRINT RIGHT$(" "+MID$(STR$(L2),2),4)" :"MID$(A$,4,16)" "T$(T9)" " 67 P=PEEK(203) AND R 68 GET Z$: IF Z$="" AND P<064 GOTO73 69 IF Z$="Y" OR Z$="N" THEN Z=ASC(Z$): R=255: GOTO73 70 IF Z$=CHR$(13) THEN R=0: GOTO73 71 GOTO68 72 : 73 IF Z<80 THEN PRINT "[145] [145]": GOTO75 74 N=N+1: L2(N)=L2: N$(N)=N$: T%(N)=T9: L1%(N)=L1% 75 IF ST=0 AND N<232 GOTO60 76 XX=FR: GOSUB 136: CLOSE1: CLOSE15: PRINT " * * * * * " 77 IF N=0 THEN PRINT "* NO PROGRAMS *": GOTO 120 78 FOR J=1 TO N 79 L2=L2(J): T%=T%(J): IF L>L2 GOTO100 80 IF Q=0 GOTO84 81 PRINT "*** OUTPUT DISK FULL" 82 INPUT"DO YOU HAVE A NEW ONE";Z$ 83 IF ASC(Z$)<>89 THEN 122 84 CLOSE15: XX=TU: GOSUB 136: REM SWAP TO DESTINATION 85 OPEN 15,T,15: INPUT"WANT TO NEW THE OUTPUT DISK N[157][157][157]";Z$ 86 IF ASC(Z$)<>89 GOTO92 87 : 88 INPUT"DISK NAME,ID";X$,Y$ 89 PRINT#15,"N"+T$+":"+X$+","+Y$ 90 GOSUB127: IF E THEN STOP: GOTO84 91 : 92 PRINT#15,"I"+T$: OPEN 1,T,0,"$"+T$+": !#$%&" 93 GOSUB127: IF E THEN STOP: GOTO84 94 GOSUB131: GOSUB131: Q=Q+1 95 GET#1,X$: IF X$<>"" GOTO95 96 GOSUB131 97 L=X+Y*256: PRINT "(";L;"BLOCKS FREE )" 98 XX=TU: GOSUB 136: CLOSE1: CLOSE15: GOTO79 99 : 100 XX=FR: GOSUB 136: OPEN 14,F,15: REM SOURCE CMD CHANNEL 101 XX=TU: GOSUB 136: OPEN 15,T,15: REM DEST CMD CHANNEL 102 PRINT LEFT$(N$(J)+" ",21); 103 XX=FR: GOSUB 136: OPEN 3,F,3,F$+":"+N$(J)+","+T$(T%) 104 INPUT#14,E,E$,E1,E2: GOSUB128: IF E THEN PRINT "** ";E$;E: GOTO117 105 : 106 XX=TU: GOSUB 136: REM DESTINATION 107 IF T%=4 THEN OPEN 4,T,4,T$+":"+N$(J)+",L,"+CHR$(L1%(J)): GOTO111 108 : 109 OPEN 4,T,4,T$+":"+N$(J)+","+T$(T%)+",W" 110 : 111 L=L-L2: GOSUB127: IF E THEN PRINT "*** ";E$;E: GOTO117 112 IF T%=4 THEN SYS(Z4): GOTO114: REM RELATIVE COPY 113 SYS(Z3) 114 XX=TU: GOSUB 136: REM SET DESTINATION AGAIN 115 N$(J)="": GOSUB127: IF E THEN PRINT "**** ";E$;E: GOTO117 116 PRINT "[145]" 117 XX=FR: GOSUB 136: CLOSE3: CLOSE14: REM SOURCE 118 XX=TU: GOSUB 136: CLOSE4: CLOSE15: REM DESTINATION 119 NEXTJ 120 X=FRE(0): INPUT"ANOTHER INPUT DISK READY";Z$ 121 IF ASC(Z$)=89 GOTO50 122 POKE 1,55: END 123 INPUT"DRIVE 0[157][157][157]";D 124 IF D*D<>D GOTO123 125 D$=CHR$(D+48): RETURN 126 : 127 INPUT#15,E,E$,E1,E2 128 IF E=0 THEN E=(ST AND 191): E$="*ST*" 129 RETURN 130 : 131 GET#1,X$,X$,X$ 132 X=ASC(X$+CHR$(0)) 133 GET#1,X$: Y=ASC(X$+CHR$(0)) 134 RETURN 135 : 136 POKE TP,PEEK(XX): SYS(SWAP): RETURN: REM FLIP TO SOURCE/DESTINATION DRIVE